home *** CD-ROM | disk | FTP | other *** search
/ Windows Game Programming for Dummies (2nd Edition) / WinGamProgFD.iso / pc / DirectX SDK / DXSDK / bin / DXUtils / AppWizard / DXAppwiz.awx / TEMPLATE / D3DFILE.H < prev    next >
Encoding:
C/C++ Source or Header  |  2001-10-25  |  4.2 KB  |  129 lines

  1. //-----------------------------------------------------------------------------
  2. // File: D3DFile.h
  3. //
  4. // Desc: Support code for loading DirectX .X files.
  5. //-----------------------------------------------------------------------------
  6. #ifndef D3DFILE_H
  7. #define D3DFILE_H
  8. #include <tchar.h>
  9. #include <d3d8.h>
  10. #include <d3dx8.h>
  11.  
  12.  
  13.  
  14.  
  15.  
  16. //-----------------------------------------------------------------------------
  17. // Name: class CD3DMesh
  18. // Desc: Class for loading and rendering file-based meshes
  19. //-----------------------------------------------------------------------------
  20. class CD3DMesh
  21. {
  22. public:
  23.     TCHAR               m_strName[512];
  24.  
  25.     LPD3DXMESH          m_pSysMemMesh;    // SysMem mesh, lives through resize
  26.     LPD3DXMESH          m_pLocalMesh;     // Local mesh, rebuilt on resize
  27.     
  28.     DWORD               m_dwNumMaterials; // Materials for the mesh
  29.     D3DMATERIAL8*       m_pMaterials;
  30.     LPDIRECT3DTEXTURE8* m_pTextures;
  31.     BOOL                m_bUseMaterials;
  32.  
  33. public:
  34.     // Rendering
  35.     HRESULT Render( LPDIRECT3DDEVICE8 pd3dDevice, 
  36.                     BOOL bDrawOpaqueSubsets = TRUE,
  37.                     BOOL bDrawAlphaSubsets = TRUE );
  38.  
  39.     // Mesh access
  40.     LPD3DXMESH GetSysMemMesh() { return m_pSysMemMesh; }
  41.     LPD3DXMESH GetLocalMesh()  { return m_pLocalMesh; }
  42.  
  43.     // Rendering options
  44.     VOID    UseMeshMaterials( BOOL bFlag ) { m_bUseMaterials = bFlag; }
  45.     HRESULT SetFVF( LPDIRECT3DDEVICE8 pd3dDevice, DWORD dwFVF );
  46.  
  47.     // Initializing
  48.     HRESULT RestoreDeviceObjects( LPDIRECT3DDEVICE8 pd3dDevice );
  49.     HRESULT InvalidateDeviceObjects();
  50.  
  51.     // Creation/destruction
  52.     HRESULT Create( LPDIRECT3DDEVICE8 pd3dDevice, TCHAR* strFilename );
  53.     HRESULT Create( LPDIRECT3DDEVICE8 pd3dDevice, LPDIRECTXFILEDATA pFileData );
  54.     HRESULT Destroy();
  55.  
  56.     CD3DMesh( TCHAR* strName = _T("CD3DFile_Mesh") );
  57.     virtual ~CD3DMesh();
  58. };
  59.  
  60.  
  61.  
  62.  
  63. //-----------------------------------------------------------------------------
  64. // Name: class CD3DFrame
  65. // Desc: Class for loading and rendering file-based meshes
  66. //-----------------------------------------------------------------------------
  67. class CD3DFrame
  68. {
  69. public:
  70.     TCHAR      m_strName[512];
  71.     D3DXMATRIX m_mat;
  72.     CD3DMesh*  m_pMesh;
  73.     TCHAR      m_strMeshName[512];
  74.  
  75.     CD3DFrame* m_pNext;
  76.     CD3DFrame* m_pChild;
  77.  
  78. public:
  79.     // Matrix access
  80.     VOID        SetMatrix( D3DXMATRIX* pmat ) { m_mat = *pmat; }
  81.     D3DXMATRIX* GetMatrix()                   { return &m_mat; }
  82.  
  83.     CD3DMesh*   FindMesh( TCHAR* strMeshName );
  84.     CD3DFrame*  FindFrame( TCHAR* strFrameName );
  85.     BOOL        EnumMeshes( BOOL (*EnumMeshCB)(CD3DMesh*,VOID*), 
  86.                             VOID* pContext );
  87.  
  88.     HRESULT Destroy();
  89.     HRESULT RestoreDeviceObjects( LPDIRECT3DDEVICE8 pd3dDevice );
  90.     HRESULT InvalidateDeviceObjects();
  91.     HRESULT Render( LPDIRECT3DDEVICE8 pd3dDevice, 
  92.                     BOOL bDrawOpaqueSubsets = TRUE,
  93.                     BOOL bDrawAlphaSubsets = TRUE,
  94.                     D3DXMATRIX* pmatWorldMartix = NULL);
  95.     
  96.     CD3DFrame( TCHAR* strName = _T("CD3DFile_Frame") );
  97.     virtual ~CD3DFrame();
  98. };
  99.  
  100.  
  101.  
  102.  
  103. //-----------------------------------------------------------------------------
  104. // Name: class CD3DFile
  105. // Desc: Class for loading and rendering file-based meshes
  106. //-----------------------------------------------------------------------------
  107. class CD3DFile : public CD3DFrame
  108. {
  109.     HRESULT LoadMesh( LPDIRECT3DDEVICE8 pd3dDevice, LPDIRECTXFILEDATA pFileData, 
  110.                       CD3DFrame* pParentFrame );
  111.     HRESULT LoadFrame( LPDIRECT3DDEVICE8 pd3dDevice, LPDIRECTXFILEDATA pFileData, 
  112.                        CD3DFrame* pParentFrame );
  113. public:
  114.     HRESULT Create( LPDIRECT3DDEVICE8 pd3dDevice, TCHAR* strFilename );
  115.     HRESULT CreateFromResource( LPDIRECT3DDEVICE8 pd3dDevice, TCHAR* strResource, TCHAR* strType );
  116.     // For pure devices, specify the world transform. If the world transform is not
  117.     // specified on pure devices, this function will fail.
  118.     HRESULT Render( LPDIRECT3DDEVICE8 pd3dDevice, D3DXMATRIX* pmatWorldMatrix = NULL );
  119.  
  120.     CD3DFile() : CD3DFrame( _T("CD3DFile_Root") ) {}
  121. };
  122.  
  123.  
  124.  
  125. #endif
  126.  
  127.  
  128.  
  129.